df_collapsed <- df %>% group_by(party) %>% summarise(text = paste(text, collapse = " "))
tokens <- df_collapsed %>%
unnest_tokens(word, text) %>%
count(party, word, sort=TRUE) %>%
filter(!word %in% stopwords) %>%
bind_tf_idf(word, party, n)
tokens %>%
arrange(desc(n)) %>%
mutate(word = factor(word, levels = rev(unique(word)))) %>%
group_by(party) %>%
top_n(15, n) %>%
ungroup() %>%
ggplot(aes(word, n, fill = party)) +
geom_col(show.legend = FALSE) +
labs(x = NULL, y = "term frequency") +
facet_wrap(~party, ncol = 2, scales = "free") +
coord_flip()
tokens %>%
arrange(desc(tf_idf)) %>%
mutate(word = factor(word, levels = rev(unique(word)))) %>%
group_by(party) %>%
top_n(15, tf_idf) %>%
ungroup() %>%
ggplot(aes(word, tf_idf, fill = party)) +
geom_col(show.legend = FALSE) +
labs(x = NULL, y = "tf-idf") +
facet_wrap(~party, ncol = 2, scales = "free") +
coord_flip()
bigrams <- df_collapsed %>%
unnest_tokens(bigram, text, token = "ngrams", n=2)
bigrams <- bigrams %>%
separate(bigram, c("word1", "word2"), sep=" ") %>%
filter(!word1 %in% stopwords) %>%
filter(!word2 %in% stopwords) %>%
count(word1, word2, party, sort=TRUE) %>%
unite(bigram, word1, word2, sep=" ")
bigrams %>%
arrange(desc(n)) %>%
mutate(word = factor(bigram, levels = rev(unique(bigram)))) %>%
group_by(party) %>%
top_n(10, n) %>%
ungroup() %>%
ggplot(aes(word, n, fill = party)) +
geom_col(show.legend = FALSE) +
labs(x = NULL, y = "bigram frequency") +
facet_wrap(~party, ncol = 2, scales = "free") +
coord_flip()
Netzwerkanalyse umfasst Methoden, die Beziehungen zwischen Einheiten beschreiben. Ein Netzwerk besteht aus Kanten sowie den Kanten (Verbindungen) zwischen den Einheiten. In einem sozialen Netzwerk z.B. sind diese Einheiten oft einzelne Personen, und Kanten beschreiben Freundschaften, Zugehörigkeiten oder andere Arten von sozialen Beziehungen.
Obwohl die Netzwerkanalyse am häufigsten zur Beschreibung von Beziehungen zwischen Menschen verwendet wird, gibt es einige Pioniere, die diese Methode zur Darstellung von Beziehungen zwischen Wörtern verwendeten. Zum Beispiel kann man einen Korpus von Dokumenten als ein Netzwerk darstellen, in dem jeder Knoten ein Dokument ist, und die Dicke oder Stärke der Kanten zwischen ihnen beschreibt Ähnlichkeiten zwischen den Wörtern, die in zwei beliebigen Dokumenten verwendet werden. Oder man kann ein Textnetzwerk erstellen, in dem einzelne Wörter die Knoten sind, und die Kanten zwischen ihnen beschreiben die Regelmäßigkeit, mit der sie in Dokumenten zusammenkommen.
Eine sehr gute Einführung in das Thema und die hier verwendete Library textnets gibt es hier.
x <- file_names[2]
x
## [1] "CDU.pdf"
x <- file_names[6]
x
## [1] "SPD.pdf"
x <- file_names[5]
x
## [1] "Gruene.pdf"
x <- file_names[4]
x
## [1] "FDP.pdf"
x <- file_names[3]
x
## [1] "DIE_LINKE.pdf"
x <- file_names[1]
x
## [1] "AfD.pdf"